/*
 * 
 *  Este arquivo é parte do software TODO Calculadora. TODO Calculadora é um software livre;
 *  você pode redistribui-lo e/ou modifica-lo dentro dos termos da Licença Pública Geral GNU
 *  como publicada pela Fundação do Software Livre (FSF); na versão 2 da Licença,
 *  ou (na sua opnião) qualquer versão.
 *  
 *	Este programa é distribuido na esperança que possa ser útil, mas SEM NENHUMA GARANTIA;
 *  sem uma garantia implícita de ADEQUAÇÂO a qualquer MERCADO ou APLICAÇÃO EM PARTICULAR.
 *  Veja a Licença Pública Geral GNU para maiores detalhes. Você deve ter recebido uma cópia
 *  da Licença Pública Geral GNU junto com este programa, se não, escreva para a Fundação do
 *	Software Livre(FSF)
 *
 *	Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 */

package gui;

import javax.swing.text.AttributeSet;
import javax.swing.text.BadLocationException;
import javax.swing.text.PlainDocument;

/**
 * <p>
 * Classe utilizada para validar o campo JTextField da calculadora.
 * </p>
 * 
 * @author Willyan Guimarães Caetano
 */
public class TextDocument extends PlainDocument {

	private int tamanhoMaximo = 12;

	public TextDocument() {
		super();
	}

	public TextDocument(int tamanho) {
		super();
		tamanhoMaximo = tamanho;
	}

	/**
	 * Executa validação que impede campos não desejados em determinada
	 * {@link JTextField}
	 * 
	 * @param offs
	 * @param string
	 * @param attributeSet
	 * @throws BadLocationException
	 */
	@Override
	public void insertString(int offs, String string, AttributeSet attributeSet)
			throws BadLocationException {
		if (string == null) {
			return;
		}

		String oldString = getText(0, getLength());
		String newString = oldString.substring(0, offs) + string
				+ oldString.substring(offs);

		if (newString.length() > tamanhoMaximo) {
			super.insertString(offs, "", attributeSet);

		} else {
			super.insertString(offs, string, attributeSet);
		}

	}

}
